package org.ar.tiendaonline.action;

import java.util.*;

import org.ar.tiendaonline.service.*;
import org.ar.tiendaonline.vo.*;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


public class ProveedorAction extends ActionSupport{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6359584556205757992L;
	/**
	 * 
	 */
	
	
	
	private ProveedorService provService = new ProveedorDaoService();
	private FacturaService facService = new FacturaDaoService();
	private Proveedor proveedor;
	private Factura factura;
	private List<Factura> facturas;
	private List<Proveedor> proveedores;
	private List<Proveedor> proveedoresFacturas;
	
	
	
	public String getAllProveedores() {
		proveedores = provService.getAllProveedores();
		return "success";
	}
	
	public String showFacturasProv() {
		proveedoresFacturas = provService.showFacturasProv(proveedor.getProveedorId());
		return "success";
	}
	
	public String setUpForInsertOrUpdateProv(){
		prep();
		if (proveedor != null && proveedor.getProveedorId() != 0) {
			proveedor = provService.getProveedor(proveedor.getProveedorId());
		}
		return "success";
	}
	
	
	
	public String insertOrUpdateProv(){
    	if(!validationSuccessful()){
    		return "input";
    	}else{
    		if (proveedor.getProveedorId() == null) {
    			provService.insertProveedor(proveedor);
    		} else {
    			provService.updateProveedor(proveedor);
    		}
        	
    	}
    	return "success";
    }
	
//	public String insertProvFactura() {
//		provService.insertProvFactura(factura);
//		return "success";
//	}
	
	
	public String deleteProveedor(){
		provService.deleteProveedor(proveedor.getProveedorId());
		return "success";
	}
	
	
	
	
	
	private void prep() {
		facturas = facService.getAllFacturas();
		Map session = ActionContext.getContext().getSession();
		session.put("facturas", facturas);
	}
	
	private boolean validationSuccessful(){
    	if(proveedor.getNombre().equals("") || proveedor.getNombre() == null){
    		addActionMessage("El campo nombre no debe estar vacio");
    	}

    	if(this.hasActionMessages()){
    		return false;
    	}else{
    		return true;
    	}
    		
    	
    }
	
	public List<Proveedor> getProveedores() {
		return proveedores;
	}

	public void setProveedores(List<Proveedor> proveedores) {
		this.proveedores = proveedores;
	}
	public Proveedor getProveedor() {
		return proveedor;
	}
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	public ProveedorService getProvService() {
		return provService;
	}

	public void setProvService(ProveedorService provService) {
		this.provService = provService;
	}

	public FacturaService getFacService() {
		return facService;
	}

	public void setFacService(FacturaService facService) {
		this.facService = facService;
	}

	public List<Factura> getFacturas() {
		return facturas;
	}

	public void setFacturas(List<Factura> facturas) {
		this.facturas = facturas;
	}

	public List<Proveedor> getProveedoresFacturas() {
		return proveedoresFacturas;
	}

	public void setProveedoresFacturas(List<Proveedor> proveedoresFacturas) {
		this.proveedoresFacturas = proveedoresFacturas;
	}
	
	
}
